package com.qq.xrx1002.androidgame;

import org.cocos2d.actions.instant.CCCallFunc;
import org.cocos2d.actions.interval.CCMoveTo;
import org.cocos2d.actions.interval.CCSequence;
import org.cocos2d.nodes.CCSprite;
import org.cocos2d.types.CGPoint;
import org.cocos2d.types.util.CGPointUtil;

/**
 * Created by Alyson on 2018/11/27.
 */
public abstract class Bullet extends CCSprite {

    private int speed=100;//定义子弹速度
    private int attack=20;//设置攻击值
    private ShooterPlant shooterPlant;//定义射手型的植物
    public Bullet(String filepath, ShooterPlant shooterPlant) {
        super(filepath);
        this.shooterPlant= shooterPlant;
        setPosition(shooterPlant.getPosition().x+20,shooterPlant.getPosition().y+50);//子弹设置相应的位置
        shooterPlant.getParent().addChild(this,6);//得到地图（复容器）：第6层
        shooterPlant.getBullets().add(this);//把子弹放到弹夹里
        move();
    }

    private void move() {//创建移动
        CGPoint end=ccp(1400,getPosition().y);//得到终点；1400表示为地图的长度
        float t= CGPointUtil.distance(getPosition(),end)/speed;//计算时间（从子弹当前位置，除以速度）
        CCMoveTo ccMoveTo=CCMoveTo.action(t,end);
        CCCallFunc ccCallFunc=CCCallFunc.action(this,"end");//当打出去则调用自身的结束
        CCSequence ccSequence=CCSequence.actions(ccMoveTo,ccCallFunc);
        runAction(ccSequence);
    }

    public void end(){
        removeSelf();//移除自身
        shooterPlant.getBullets().remove(this);//从弹夹中移除自身
    }

    public int getAttack() {
        return attack;
    }

    public void setAttack(int attack) {
        this.attack = attack;
    }
    public abstract void showBulletBlast(Zombie zombie);//设置抽象方法创建子弹攻击
}
